package com.example.canal.common.util;

/**
 * @author LiYuhang
 * @version 0.1
 * @application
 * @Date 2021/8/8 18:31
 */
public class MyStringUtil {


    /**
     * 下划线转驼峰
     * @param underlineStr 带有下划线的字符串
     * @return 驼峰字符串
     */
    public static String toCamelCase(String underlineStr) {
        if (underlineStr == null) {
            return null;
        }
        // 分成数组
        char[] charArray = underlineStr.toCharArray();
        // 判断上次循环的字符是否是"_"
        boolean underlineBefore = false;
        StringBuffer buffer = new StringBuffer();
        for (int i = 0, l = charArray.length; i < l; i++) {
            // 判断当前字符是否是"_",如果跳出本次循环
            if (charArray[i] == 95) {
                underlineBefore = true;
            } else if (underlineBefore) {
                // 如果为true，代表上次的字符是"_",当前字符需要转成大写
                buffer.append(charArray[i] -= 32);
                underlineBefore = false;
            } else {
                // 不是"_"后的字符就直接追加
                buffer.append(charArray[i]);
            }
        }
        return buffer.toString();
    }

    /**
     * 首字母转大写
     * @param word 字符串
     * @return 首字母大写的字符串
     */
    public static String upperFirst(String word) {
        if (word == null) {
            return null;
        }
        if (word.length() == 0) {
            return word;
        }

        return word.substring(0, 1).toUpperCase() + word.substring(1);
    }
}
